#include "../../include/TemplateCenter.h"

TemplateCenter* TemplateCenter::templateCenter = nullptr;

TemplateCenter::TemplateCenter() {}

TemplateCenter::~TemplateCenter() {}

void TemplateCenter::initTemplateCenter() {
    // TODO 意外处理
    templateCenter = new TemplateCenter();
}

void TemplateCenter::deleteTemplateCenter() {
    // TODO 意外处理
    delete templateCenter;
}

TemplateCenter* TemplateCenter::getTemplateCenter() {
    // TODO 意外处理
    return templateCenter;
}

bool TemplateCenter::isTemppateConponent(string name) {
    return nameSet.find(name) != nameSet.end();
}

Component* TemplateCenter::createComponent(string name) {
    if(name == CHASSIS) {
        return new Chassis();
    }
    else if(name == LASERRADAR) {
        return new LaserRadar();
    }
    else {
        return new Component(name);
    }
}

Component* TemplateCenter::copyComponent(string name,Component* component) {
    if(name == CHASSIS) {
        return new Chassis();
    }
    else if(name == LASERRADAR) {
        return new LaserRadar();
    }
    else {
        return new Component(name,component);
    }
}

LaserRadar* TemplateCenter::switchToLaser(Component* component) {
    return (LaserRadar*)component;
}

Chassis* TemplateCenter::switchToChassis(Component* component) {
    return (Chassis*)component;
}